package com.youxue.service;

import com.youxue.entity.Class;
import com.youxue.entity.Pager;

import java.util.List;

/**
 * Created by 15c on 2018/1/20.
 */
public interface ClassService {
    /**
     * 用于展示一个类型的所有课程，在分类型选择时使用；分页显示
     * @param classTypeId 课程类型id
     * @return
     */
    List<Class> showATypeAllClassByPage(Integer startPos, Integer pageSize, Integer classTypeId);


    /**
     * 根据classId查询一个课程的详情
     * @param classId
     * @return
     */
    Class showAClassInfo(Integer classId);

    /**
     * 查询一个类型所有课程数量
     * @param classTypeId
     * @return
     */
    int  showAClassTypeCount(Integer classTypeId);

    /**
     * 通过关键字检索课程
     * @param keyWord
     * @return
     */
    List<Class> showListClassByKeyWord(String keyWord, Integer startPos, Integer pageSize);

    /**
     * 通过关键字检索课程总数
     * @param keyWord
     * @return
     */
    int showListClassCountByKeyWord(String keyWord);

    /**
     * 查询学习人数最多的课程
     * @param num 限制显示条数
     * @return
     */
    List<Class> showListClassCountMore(Integer num);

  /**
     * 查询最新课程
     *
     * @return
     */
    List<Class> selectOrderClassTimeByPage(Integer startNum,Integer offsetNum );


    /**
     * 查询时间最近的课程
     * @param num 限制显示条数
     * @return
     */
    List<Class> showListClassByTime(Integer num);

    /**
     * 使课程学习人数加一
     * @param classId
     * @return
     */
    int reviseAClassCount(Integer classId);

    /**
     * 修改一门课程总体评分
     * @param classId
     * @return
     */
    int reviseAClassScore(Integer classId, Double score);

    /**
     * 展示以有课程列表
     * @param pageOffset 每次查询数据的开始位置
     * 后台使用
     * @return
     */
    Pager<Class> showListClass(Integer pageOffset);

    /**
     * 查询课程总数
     * 后台使用
     * @return
     */
    int showClassTotal();

    /**
     * 查询一门课程详细信息
     * 后台使用
     * @param classId
     * @return
     */
    Class showAClass(Integer classId);

    /**
     * 更新一条课程
     * 后台使用
     * @param aclass
     * @return
     */
    int updateAclass(Class aclass);

    /**
     * 查询课程总数（通过关键字检索）
     * 后台使用
     * @param keyword
     * @return
     */
    int findClassCountByRetrieval(String keyword);

    /**
     * 关键字检索课程（分页显示）
     * 后台使用
     * @param keyword
     * @param pageOffset 每次查询的起始位置
     * @return
     */
    Pager<Class> findClassByRetrieval(String keyword, Integer pageOffset);

    /**
     * 添加一门课程
     * 后台使用
     * @param aclass
     * @return
     */
    int addAclass(Class aclass);

    /**
     * 查询学习人数最多的总课程数量
     * @return
     */
    int selectMostStudyClassNum();

     /**
     * 分页查询学习人数最多的课程
     * @return
     */
    List<Class> selectMostStudyClassByPage(Integer startNum,Integer offSetNum);


}
